{
 "cells": [
  {
   "cell_type": "markdown",
   "execution_count": null,
   "metadata": {
    "id": "sTVhlNtdri3w",
    "papermill": {
     "duration": 0.010431,
     "end_time": "2020-08-28T08:08:04.095233",
     "exception": false,
     "start_time": "2020-08-28T08:08:04.084802",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "# **Using Tensorflow for detecting Covid-19 Infected Lungs from Normal Lungs with Chest X-Ray**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:04.118755Z",
     "iopub.status.busy": "2020-08-28T08:08:04.117992Z",
     "iopub.status.idle": "2020-08-28T08:08:04.121604Z",
     "shell.execute_reply": "2020-08-28T08:08:04.120782Z"
    },
    "id": "FrO_RdeCrCNI",
    "papermill": {
     "duration": 0.017956,
     "end_time": "2020-08-28T08:08:04.121748",
     "exception": false,
     "start_time": "2020-08-28T08:08:04.103792",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:04.145590Z",
     "iopub.status.busy": "2020-08-28T08:08:04.144725Z",
     "iopub.status.idle": "2020-08-28T08:08:11.446544Z",
     "shell.execute_reply": "2020-08-28T08:08:11.445759Z"
    },
    "papermill": {
     "duration": 7.316666,
     "end_time": "2020-08-28T08:08:11.446684",
     "exception": false,
     "start_time": "2020-08-28T08:08:04.130018",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:11.468827Z",
     "iopub.status.busy": "2020-08-28T08:08:11.467918Z",
     "iopub.status.idle": "2020-08-28T08:08:11.472643Z",
     "shell.execute_reply": "2020-08-28T08:08:11.471985Z"
    },
    "id": "tVinQ9F7ySj6",
    "papermill": {
     "duration": 0.017761,
     "end_time": "2020-08-28T08:08:11.472781",
     "exception": false,
     "start_time": "2020-08-28T08:08:11.455020",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.3.0\n"
     ]
    }
   ],
   "source": [
    "print(tf.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:11.495003Z",
     "iopub.status.busy": "2020-08-28T08:08:11.494202Z",
     "iopub.status.idle": "2020-08-28T08:08:11.497961Z",
     "shell.execute_reply": "2020-08-28T08:08:11.497303Z"
    },
    "papermill": {
     "duration": 0.017048,
     "end_time": "2020-08-28T08:08:11.498085",
     "exception": false,
     "start_time": "2020-08-28T08:08:11.481037",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "tf.random.set_seed(12)"
   ]
  },
  {
   "cell_type": "markdown",
   "execution_count": null,
   "metadata": {
    "id": "qKnF2bLUsQ-Q",
    "papermill": {
     "duration": 0.007811,
     "end_time": "2020-08-28T08:08:11.514109",
     "exception": false,
     "start_time": "2020-08-28T08:08:11.506298",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    " ## Importing kaggle Data Train_Val Set"
   ]
  },
  {
   "cell_type": "markdown",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": 0.007547,
     "end_time": "2020-08-28T08:08:11.529599",
     "exception": false,
     "start_time": "2020-08-28T08:08:11.522052",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "### Use /tmp to create temporary folder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:11.551526Z",
     "iopub.status.busy": "2020-08-28T08:08:11.550594Z",
     "iopub.status.idle": "2020-08-28T08:08:12.350937Z",
     "shell.execute_reply": "2020-08-28T08:08:12.350211Z"
    },
    "papermill": {
     "duration": 0.813433,
     "end_time": "2020-08-28T08:08:12.351076",
     "exception": false,
     "start_time": "2020-08-28T08:08:11.537643",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "bin   entrypoint.sh  kaggle  media  proc  run_jupyter.sh  srv  usr\r\n",
      "boot  etc\t     lib     mnt    root  sbin\t\t  sys  var\r\n",
      "dev   home\t     lib64   opt    run   src\t\t  tmp\r\n"
     ]
    }
   ],
   "source": [
    "!ls /"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:12.380102Z",
     "iopub.status.busy": "2020-08-28T08:08:12.379087Z",
     "iopub.status.idle": "2020-08-28T08:08:13.123254Z",
     "shell.execute_reply": "2020-08-28T08:08:13.122568Z"
    },
    "id": "67SuSQWEs_TP",
    "papermill": {
     "duration": 0.764055,
     "end_time": "2020-08-28T08:08:13.123390",
     "exception": false,
     "start_time": "2020-08-28T08:08:12.359335",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "!mkdir /tmp/Xray_train_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:13.147464Z",
     "iopub.status.busy": "2020-08-28T08:08:13.146438Z",
     "iopub.status.idle": "2020-08-28T08:08:16.418186Z",
     "shell.execute_reply": "2020-08-28T08:08:16.417243Z"
    },
    "id": "fGrAf9pptGEX",
    "papermill": {
     "duration": 3.28658,
     "end_time": "2020-08-28T08:08:16.418333",
     "exception": false,
     "start_time": "2020-08-28T08:08:13.131753",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "!cp -R \"../input/covid19-radiography-database/COVID-19 Radiography Database/COVID-19\" \"/tmp/Xray_train_data\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:16.448581Z",
     "iopub.status.busy": "2020-08-28T08:08:16.441879Z",
     "iopub.status.idle": "2020-08-28T08:08:33.530091Z",
     "shell.execute_reply": "2020-08-28T08:08:33.529380Z"
    },
    "id": "89UP3sUHtSc_",
    "papermill": {
     "duration": 17.1033,
     "end_time": "2020-08-28T08:08:33.530249",
     "exception": false,
     "start_time": "2020-08-28T08:08:16.426949",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "!cp -R \"../input/covid19-radiography-database/COVID-19 Radiography Database/NORMAL\" \"/tmp/Xray_train_data\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:33.554236Z",
     "iopub.status.busy": "2020-08-28T08:08:33.553445Z",
     "iopub.status.idle": "2020-08-28T08:08:34.303947Z",
     "shell.execute_reply": "2020-08-28T08:08:34.303170Z"
    },
    "papermill": {
     "duration": 0.764956,
     "end_time": "2020-08-28T08:08:34.304085",
     "exception": false,
     "start_time": "2020-08-28T08:08:33.539129",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "COVID-19  NORMAL\r\n"
     ]
    }
   ],
   "source": [
    "!ls \"/tmp/Xray_train_data\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:34.332899Z",
     "iopub.status.busy": "2020-08-28T08:08:34.327373Z",
     "iopub.status.idle": "2020-08-28T08:08:35.099583Z",
     "shell.execute_reply": "2020-08-28T08:08:35.098926Z"
    },
    "papermill": {
     "duration": 0.787197,
     "end_time": "2020-08-28T08:08:35.099759",
     "exception": false,
     "start_time": "2020-08-28T08:08:34.312562",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "219\r\n"
     ]
    }
   ],
   "source": [
    "!ls -1 \"/tmp/Xray_train_data/COVID-19\"| wc -l "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:35.124652Z",
     "iopub.status.busy": "2020-08-28T08:08:35.123524Z",
     "iopub.status.idle": "2020-08-28T08:08:35.882451Z",
     "shell.execute_reply": "2020-08-28T08:08:35.881742Z"
    },
    "papermill": {
     "duration": 0.773847,
     "end_time": "2020-08-28T08:08:35.882600",
     "exception": false,
     "start_time": "2020-08-28T08:08:35.108753",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1341\r\n"
     ]
    }
   ],
   "source": [
    "!ls -1 \"/tmp/Xray_train_data/NORMAL\"| wc -l "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:35.913671Z",
     "iopub.status.busy": "2020-08-28T08:08:35.912362Z",
     "iopub.status.idle": "2020-08-28T08:08:36.798965Z",
     "shell.execute_reply": "2020-08-28T08:08:36.798329Z"
    },
    "papermill": {
     "duration": 0.907732,
     "end_time": "2020-08-28T08:08:36.799105",
     "exception": false,
     "start_time": "2020-08-28T08:08:35.891373",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Deleting extra image\n",
    "!find \"/tmp/Xray_train_data/NORMAL\" -type f -print0 | sort -zR | tail -zn +220 | xargs -0 rm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:36.823636Z",
     "iopub.status.busy": "2020-08-28T08:08:36.822887Z",
     "iopub.status.idle": "2020-08-28T08:08:37.569115Z",
     "shell.execute_reply": "2020-08-28T08:08:37.568431Z"
    },
    "papermill": {
     "duration": 0.76119,
     "end_time": "2020-08-28T08:08:37.569264",
     "exception": false,
     "start_time": "2020-08-28T08:08:36.808074",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "219\r\n"
     ]
    }
   ],
   "source": [
    "!ls -1 \"/tmp/Xray_train_data/NORMAL\"| wc -l "
   ]
  },
  {
   "cell_type": "markdown",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": 0.008631,
     "end_time": "2020-08-28T08:08:37.587047",
     "exception": false,
     "start_time": "2020-08-28T08:08:37.578416",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "### To deal with imbalanced dataset, I just took a lazy way out."
   ]
  },
  {
   "cell_type": "markdown",
   "execution_count": null,
   "metadata": {
    "id": "Txo-Ok26yCnQ",
    "papermill": {
     "duration": 0.008475,
     "end_time": "2020-08-28T08:08:37.604652",
     "exception": false,
     "start_time": "2020-08-28T08:08:37.596177",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "## **Starting Actual work**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:37.629106Z",
     "iopub.status.busy": "2020-08-28T08:08:37.628037Z",
     "iopub.status.idle": "2020-08-28T08:08:37.631925Z",
     "shell.execute_reply": "2020-08-28T08:08:37.631199Z"
    },
    "papermill": {
     "duration": 0.01833,
     "end_time": "2020-08-28T08:08:37.632086",
     "exception": false,
     "start_time": "2020-08-28T08:08:37.613756",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "train_data_dir= \"/tmp/Xray_train_data\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:37.665994Z",
     "iopub.status.busy": "2020-08-28T08:08:37.665156Z",
     "iopub.status.idle": "2020-08-28T08:08:37.871480Z",
     "shell.execute_reply": "2020-08-28T08:08:37.870794Z"
    },
    "papermill": {
     "duration": 0.23051,
     "end_time": "2020-08-28T08:08:37.871616",
     "exception": false,
     "start_time": "2020-08-28T08:08:37.641106",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Used Sequential\n",
    "model=tf.keras.Sequential()\n",
    "model.add(tf.keras.layers.Conv2D(8, (3,3), activation='relu', input_shape=(64, 64, 3)))\n",
    "model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding=\"valid\"))\n",
    "model.add(tf.keras.layers.Conv2D(16, (3,3), activation='relu'))\n",
    "model.add(tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding=\"valid\"))\n",
    "model.add(tf.keras.layers.Flatten())\n",
    "model.add(tf.keras.layers.Dense(32))\n",
    "model.add(tf.keras.layers.Dropout(.1, input_shape=(32,)))\n",
    "model.add(tf.keras.layers.Dense(1, activation='sigmoid'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:37.903605Z",
     "iopub.status.busy": "2020-08-28T08:08:37.898971Z",
     "iopub.status.idle": "2020-08-28T08:08:37.911535Z",
     "shell.execute_reply": "2020-08-28T08:08:37.910922Z"
    },
    "papermill": {
     "duration": 0.030789,
     "end_time": "2020-08-28T08:08:37.911674",
     "exception": false,
     "start_time": "2020-08-28T08:08:37.880885",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Defining optimizer\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "\n",
    "model.compile(optimizer=Adam(lr=0.0001),\n",
    "              loss='binary_crossentropy',\n",
    "              metrics = ['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:37.940141Z",
     "iopub.status.busy": "2020-08-28T08:08:37.939346Z",
     "iopub.status.idle": "2020-08-28T08:08:38.151107Z",
     "shell.execute_reply": "2020-08-28T08:08:38.150176Z"
    },
    "papermill": {
     "duration": 0.230393,
     "end_time": "2020-08-28T08:08:38.151283",
     "exception": false,
     "start_time": "2020-08-28T08:08:37.920890",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 308 images belonging to 2 classes.\n",
      "Found 130 images belonging to 2 classes.\n"
     ]
    }
   ],
   "source": [
    "# Directing Images to train folder\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "img_height, img_width=64,64\n",
    "batch_size=16\n",
    "train_datagen = ImageDataGenerator(validation_split=0.3) # set validation split\n",
    "\n",
    "train_generator = train_datagen.flow_from_directory(\n",
    "    train_data_dir,\n",
    "    target_size=(img_height, img_width),\n",
    "    batch_size=batch_size,\n",
    "    class_mode='binary',\n",
    "    subset='training') # set as training data\n",
    "# Splitting images for validation set\n",
    "validation_generator = train_datagen.flow_from_directory(\n",
    "    train_data_dir, # same directory as training data\n",
    "    target_size=(img_height, img_width),\n",
    "    batch_size=batch_size,\n",
    "    class_mode='binary',\n",
    "    subset='validation') # set as validation data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:08:38.177603Z",
     "iopub.status.busy": "2020-08-28T08:08:38.176868Z",
     "iopub.status.idle": "2020-08-28T08:10:32.825703Z",
     "shell.execute_reply": "2020-08-28T08:10:32.826415Z"
    },
    "papermill": {
     "duration": 114.665289,
     "end_time": "2020-08-28T08:10:32.826604",
     "exception": false,
     "start_time": "2020-08-28T08:08:38.161315",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/10\n",
      "20/20 - 12s - loss: 11.3663 - accuracy: 0.4675 - val_loss: 7.7408 - val_accuracy: 0.6000\n",
      "Epoch 2/10\n",
      "20/20 - 11s - loss: 4.5635 - accuracy: 0.7045 - val_loss: 3.5706 - val_accuracy: 0.7462\n",
      "Epoch 3/10\n",
      "20/20 - 11s - loss: 2.1495 - accuracy: 0.8149 - val_loss: 3.4849 - val_accuracy: 0.8077\n",
      "Epoch 4/10\n",
      "20/20 - 11s - loss: 1.6937 - accuracy: 0.8506 - val_loss: 1.9767 - val_accuracy: 0.8462\n",
      "Epoch 5/10\n",
      "20/20 - 11s - loss: 1.2325 - accuracy: 0.9026 - val_loss: 2.2108 - val_accuracy: 0.8462\n",
      "Epoch 6/10\n",
      "20/20 - 11s - loss: 0.8842 - accuracy: 0.8994 - val_loss: 1.3561 - val_accuracy: 0.9077\n",
      "Epoch 7/10\n",
      "20/20 - 11s - loss: 0.3735 - accuracy: 0.9351 - val_loss: 1.8989 - val_accuracy: 0.8615\n",
      "Epoch 8/10\n",
      "20/20 - 11s - loss: 0.3084 - accuracy: 0.9481 - val_loss: 0.9758 - val_accuracy: 0.9000\n",
      "Epoch 9/10\n",
      "20/20 - 11s - loss: 0.3495 - accuracy: 0.9383 - val_loss: 0.9359 - val_accuracy: 0.9000\n",
      "Epoch 10/10\n",
      "20/20 - 11s - loss: 0.1992 - accuracy: 0.9643 - val_loss: 0.7365 - val_accuracy: 0.9077\n"
     ]
    }
   ],
   "source": [
    "# Training the model\n",
    "trainer=model.fit(train_generator,validation_data=validation_generator,epochs=10,verbose=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:10:32.855392Z",
     "iopub.status.busy": "2020-08-28T08:10:32.854627Z",
     "iopub.status.idle": "2020-08-28T08:10:33.120479Z",
     "shell.execute_reply": "2020-08-28T08:10:33.119707Z"
    },
    "papermill": {
     "duration": 0.2832,
     "end_time": "2020-08-28T08:10:33.120613",
     "exception": false,
     "start_time": "2020-08-28T08:10:32.837413",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7fe3d406fed0>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting train_loss vs val_loss\n",
    "plt.figure(figsize=(10,5))\n",
    "plt.plot(trainer.history[\"loss\"],label=\"loss\")\n",
    "plt.plot(trainer.history[\"val_loss\"],label=\"val_loss\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "execution": {
     "iopub.execute_input": "2020-08-28T08:10:33.155453Z",
     "iopub.status.busy": "2020-08-28T08:10:33.150517Z",
     "iopub.status.idle": "2020-08-28T08:10:33.324481Z",
     "shell.execute_reply": "2020-08-28T08:10:33.323875Z"
    },
    "papermill": {
     "duration": 0.192738,
     "end_time": "2020-08-28T08:10:33.324625",
     "exception": false,
     "start_time": "2020-08-28T08:10:33.131887",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7fe3bc652710>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting train_accuracy vs Val_accuracy\n",
    "plt.figure(figsize=(10,5))\n",
    "plt.plot(trainer.history[\"accuracy\"],label=\"accuracy\")\n",
    "plt.plot(trainer.history[\"val_accuracy\"],label=\"val_accuracy\")\n",
    "plt.legend(loc='upper left')"
   ]
  },
  {
   "cell_type": "markdown",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": 0.011086,
     "end_time": "2020-08-28T08:10:33.347402",
     "exception": false,
     "start_time": "2020-08-28T08:10:33.336316",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "#### Version 3 doesnot have any significance update. Just updated some folder issue.\n",
    "#### Thanks to @sarques"
   ]
  },
  {
   "cell_type": "markdown",
   "execution_count": null,
   "metadata": {
    "papermill": {
     "duration": 0.011085,
     "end_time": "2020-08-28T08:10:33.370319",
     "exception": false,
     "start_time": "2020-08-28T08:10:33.359234",
     "status": "completed"
    },
    "tags": []
   },
   "source": [
    "## If helped, do give an upvote. It means a lot."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  },
  "papermill": {
   "duration": 154.957095,
   "end_time": "2020-08-28T08:10:33.490455",
   "environment_variables": {},
   "exception": null,
   "input_path": "__notebook__.ipynb",
   "output_path": "__notebook__.ipynb",
   "parameters": {},
   "start_time": "2020-08-28T08:07:58.533360",
   "version": "2.1.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
